﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
	double a, b, c;
	cin >> a >> b >> c;
	double d = (a + b + c) / 2.0;
	double num = sqrt(d* (d - a) * (d - b) * (d - c));
	printf("%.1f\n", sqrt(d * (d - a) * (d - b) * (d - c)));
	cout <<fixed<<setprecision(1) << num << endl;
	return 0;
}
//int main()
//{
//	char a, b, c, d, e;
//	cin >> a >> b >> c >> d >> e;
//	cout << e << d << c << b << a << endl;
//	return 0;
//}
//int main()
//{
//	int n = 123;
//	cout << "右对齐：" << setw(10) << right << n << endl;
//	cout << "左对齐：" << setw(10) << left << n << endl;
//	return 0;
//}
//int main()
//{
//	int n = 255;
//	cout << "十进制: " << dec << n << endl;
//	cout << "十六进制: " << hex << n << endl;
//	cout << "八进制: " << oct << n << endl;
//	return 0;
//}
//int main()
//{
//	double pi = 3.1415926535e10;
//	cout << "默认：" << pi << endl;
//	cout << "固定小时点方式：" << fixed << pi << endl;
//	cout << "科学计数法方式：" << scientific << pi << endl;
//	cout << "固定小数点：小数点后2位有效数字：" << fixed << setprecision(2) << pi << endl;
//	return 0;
//}
//int main()
//{
//	int a = 123;
//	cout << "默认宽度：" << a << endl;
//	cout << "宽度设置为10：" << setw(10) << a << endl;
//	cout << "宽度为10，不够时填充*：" << setw(10) << setfill('*') << a << endl;
//	return 0;
//}
//int main()
//{
//	//支持相同/不同类型变量的连续输入
//	char ch = 'a';
//	float f = 0.1;
//	cout << ch << f << endl;
//
//	//格式化输出：添加（任意）空格和字符串
//	cout << "ch: " << ch << " f:" << f << endl;
//
//	//格式化输出：多次换行
//	cout << ch << endl << endl;
//	return 0;
//}
//int main()
//{
//	//同一类型变量连续输出
//	int a = 10;
//	int b = 20;
//	cout << a << " " << b << endl;
//	return 0;
//}
//int main()
//{
//	//不同类型变量的连续输入
//	int a = 0;
//	char ch = 0;
//	float f = 0;
//	cin >> a >> b >> f;
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	//同类型变量连续输⼊
//	cin >> a >> b;//以最后一次输入为准
//	//添加换行endl
//	cin >> a >> endl;//编译报错
//	return 0;
//}

//int main()
//{
//	int a;
//	char c;
//	float f;
//	cin >> a; //读取⼀个整数
//	cin >> c; //读取⼀个字符
//	cin >> f; //读取取⼀个浮点数
//	cout << "打印结果:"<<endl;
//	cout << a << endl;
//	cout << c << endl;
//	cout << f << endl;
//	return 0;
//}
//int main()
//{
//	int e;
//	cin >> a >> b >> c >> d >> e;
//	//1
//	a /= 3;
//	b += a;
//	e += a;
//	//2
//	b /= 3;
//	c += b;
//	a += b;
//	//3
//	c /= 3;
//	d += c;
//	b += c;
//	//4
//	d /= 3; 
//	e += d;
//	c += d;
//	//5
//	e /= 3;
//	a += e;
//	d += e;
//	printf("%5d%5d%5d%5d%5d", a, b, c, d, e);
//	return 0;
//}
//int main()
//{
//	cin >> a >> b >> c;
//	printf("%8d %8d %8d", a, b, c);
//	return 0;
//}
//int main()
//{
//	double r;
//	cin >> r;
//	printf("%.4f %.4f %.4f", 2 * r, 2 * pi * r, pi * r * r);
//	return 0;
//}
//int main()
//{
//	int r1, r2;
//	cin >> r1 >> r2;
//	printf("%.2f", 1 / (1.0 / r1 + 1.0 / r2));
//	return 0;
//}
//int main()
//{
//	double x;
//	cin >> x;
//	double C = 5.0 * (x - 32) / 9;
//	printf("%.5f", C);
//	return 0;
//}
//int main()
//{
//	printf("%d %d\n", 4 / 8 * 100, (4 * 100) / 8);
//	printf("%f %f\n", 4 / 8 * 100, (4 * 100) / 8);
//	printf("%f %d\n", 4 / 8 * 100, (4 * 100) / 8);
//	printf("%d %f\n", 4 / 8 * 100, (4 * 100)*1.0 / 8);
//	return 0;
//}
//int main() {
//	cin >> a >> b;
//	printf("%.3f%%", (b*1.0 / a)*100);
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	cin >> a >> b;
//	printf("%.3lf\n", a * 1.0 / b);
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	float f = 0.0f;
//	int r = scanf("%d %d %f", &a, &b, &f);
//	printf("a=%d b=%d f=%f\n", a, b, f);
//	printf("r = %d\n", r);
//	return 0;
//}
//int main()
//{
//	int a;
//	char ch;
//	scanf("%d %c", &a, &ch);//%c的前⾯加上空格，是强制跳过数据输⼊中的空⽩字符
//	printf("%d %c\n", a, ch);
//	return 0;
//}
//int main()
//{
//	int a;
//	char ch;
//	scanf("%d%c", &a, &ch);
//	printf("%d %c\n", a, ch);
//	return 0;
//}
//int main()
//{
//	char ch = 0;
//	scanf(" %c", &ch);//强制跳过空⽩字符，去读取⾮空⽩字符
//	printf("--%c--\n", ch);
//	return 0;
//
//}
//int main()
//{
//	char ch = 0;
//	scanf("%c", &ch);
//	printf("--%c--\n", ch);
//	return 0;
//}
//int main()
//{
//	int x = 0;
//	float y = 0;
//	// ⽤⼾输⼊"    -13.45e12# 0"
//	scanf("%d%f", &x, &y);
//	printf("%d %f\n", x, y);
//	return 0;
//}
//int main()
//{
//	int x = 0;
//	float y = 0;
//	// ⽤⼾输⼊"-13.45e12# 0"
//	scanf("%d", &x);
//	printf("%d\n", x);
//	scanf("%f", &y);
//	printf("%f\n", y);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	int j = 0;
//	float x = 0;
//	float y = 0;
//	scanf("%d%d%f%f", &i, &j, &x, &y);
//	printf("i = %d\n", i);
//	printf("j = %d\n", j);
//	printf("x = %f\n", x);
//	printf("y = %f\n", y);
//	return 0;
//}
//int main()
//{
//	scanf("%d%d%d%d", &a, &b, &c, &d);
//	printf("%d %d %d %d\n", a, b, c, d);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	scanf("%d", &i);
//	printf("%d\n", i);
//	return 0;
//}
//int main()
//{
//	printf("%*.*f\n", 6, 2, 0.5);
//	return 0;
//}
//int main()
//{
//	printf("%6.2f\n", 0.5);
//	return 0;
//}
//int main()
//{
//	printf("Number is %.2f\n", 0.5);
//	return 0;
//	return 0;
//}
//int main()
//{
//	printf("%12f\n", 123.45);
//	return 0;
//}
//int main()
//{
//	printf("%5d\n", 123); // 输出为"  123"
//	printf("%5d\n", 123456); // 输出为"123456"
//	printf("%-5d", 123); // 输出为"123  "
//	cout << "xx";
//	return 0;
//}
//int main()
//{
//	printf("%s will come tonight\n", "zhangsan");
//	return 0;
//}


//int main()
//{
//	printf("Hello\nWorld\n");
//	return 0;
//}
//int main()
//{
//	//int ch = 0;
//	//ch = getchar();
//	//putchar(ch);
//	putchar('x');
//	putchar('\n');
//	putchar('y');
//	putchar('\n');
//	putchar('z');
//	putchar('\n');
//	putchar(97);
//	return 0;
//}
//int main()
//{
//	int ch = getchar();
//	cout << ch << endl;
//	return 0;
//}
//int main()
//{
//	int ch;
//	ch = getchar();
//	cout << ch << endl;
//	cout << (char)ch;
//	cout << "xxxx" << endl;
//	return 0;
//}
//int main()
//{
//	a = 10;
//	b = -a;
//	c = -10;
//	cout << b <<"\n" << c << endl;
//	a = -10;
//	b = -a;
//	cout << b << endl;
//	return 0;
//}
//int main()
//{
//	//案例1
//	y = 10;
//	b = --y;//--的操作数是y，是放在y的前⾯的，就是前置--
//	cout << y << " " << b << endl;
//
//	//案例2
//	y = 10;
//	b = y--;//--的操作数是y，是放在y的后⾯的，就是后置--
//	cout << y << " " << b << endl;
//	return 0;
//}
//int main()
//{
//	//案例1
//	int x = 10;
//	a = ++x;//++的操作数是x，是放在x的前⾯的，就是前置++
//	cout << x << " " << a << endl;
//	//案例2
//	x = 10;
//	a = x++;//++的操作数是x，是放在x的后⾯的，就是后置++
//	cout << x << " " << a << endl;
//	return 0;
//}




//int main()
//{
//	cin >> a >> b >> c;
//	cout << a * 0.2 + b * 0.3 + c * 0.5 << endl;
//	return 0;
//}
//int main()
//{
//	double d;
//	cin >> d;
//	long long num = (long long)d;
//	cout << num << endl;
//	return 0;
//}
//int main()
//{
//	char c;
//	cin >> c;
//	a = c;
//	cout << a << endl;
//	return 0;
//}
//int main()
//{
//	cin >> a;
//	cout << (char)a << endl;
//	return 0;
//}